In digital cellular environment, acoustic background noise and channel bit errors (both bursty and random) may severely degrade the performance of speech coders such as the current European GSM (Global System for Mobile Communication) full rate standard. In this standard, every 20 milliseconds a total of 456 bits are sent. 260 of these bits represent the speech signal and 196 bits are added for protection against channel bit errors. In digital speech compression, it is relatively common to have a number of classes of bits with different perceptual importance. Further, for some bits (or parameters) it has been beneficial to have an indication of the likelihood of whether or not these certain key parameters are corrupt. In the GSM standard, there is a Class 1a which consists of 50 of the most sensitive bits. For this most sensitive bits there are added three parity bits. There is a second sensitive Class 1b of 132 bits and of these 132 bits there are added four tail bits used to reset a convolutional coder. There is also a Class 2 which is considered the least sensitive bits (78 bits) and these are sent with out any additional bits for protection against channel bit errors. The very sensitive bits with the parity bits and the sensitive bits along with the tail bits sum up to 189 bits. Convolution coding at the rate of 1/2 convolutional coding is done to generate a forward error correction coding. The total number of bits with the error correction coding is 378 bits, each 20 millisecond frame. To this is added the 78 least sensitive bits which are not error protected, to provide every 20 milliseconds (a frame) a total of 456 bits. At the receiver, the foregoing 378 bits undergo a Viterbi decoding. This is an efficient decoding algorithm for convolution coding, well known to those skilled in the art. This decoding step produces 189 bits for the very sensitive bits and sensitive bits. From the very sensitive 50 bits, the 3-bit parity is calculated and compared to the decoded parity bits. If the two sets of parity bits are not equal, a Bad Frame Indicator (BFI) is generated. When this is generated, the source decoder declares a bad frame and substitutes the information from the previous frame.
Referring to FIG. 1 there is illustrated this prior art system. The speech is encoded in the source encoder 12. The parity bits are added by the parity encoder 14. The convolutional encoder 16 generates the 378 bits to which is added the least sensitive 78 bits without any error protection encoding. The signals are sent via a channel 18 to a receiver. At convolution decoder 20 of the receiver the decoder 20 decodes using the Viterbi algorithm and the parity decoder 22 determines if the three bit parity matches the parity computed from the decoded very sensitive 50 bits and if there is no failure or mismatch, the 260 bits (=50 very sensitive bits+132 sensitive bits+78 least sensitive bits) are then provided out of the source decoder 26. If there is a parity error (parity bits calculated from the 50 bits do not match the decoded 3-bit parity) this is detected at detector 24 and the BFI signal is sent to the Source Decoder 26 and all of the data in that frame is discarded.
In a Viterbi algorithm decoder, as used to decode convolutionally encoded information, reliability information is developed for various path metrics computed within the Viterbi algorithm. The metrics in the Viterbi algorithm estimate the likelihood of incorrect reception of various speech coder parameters and this is passed on to the speech or source decoder. These confidence measures from the Viterbi decoding have been proposed to be used generally for rejecting bad parameters or accepting good parameters in frames.
It is highly desirable to provide an enhanced GSM full rate system with an improved method and system for decoding, to provide acceptable speech quality under bad channel conditions.